Taulukkoon (engl. array) voi tallentaa arvoja samalla tavalla set-komennolla kuin tavalliseen muuttujaan laitetaan arvo. Arvoja tallennettaessa on annettava taulukon nimi ja paikka, johon arvo t aulukossa laitetaan.
Esimerkissä
set taulu(0) "nolla"
set taulu(1) "yksi"
set taulu(0)
=> nolla
sijoitetaan taulu-taulukkoon kaksi arvoa: paikkaan 0 sijoitetaan arvo nolla ja paikkaan 1 arvo yksi.
Tavallisesti muissa ohjelmointikielissä taulukon paikan pitää olla kokonaisluku, mutta Tcl-kielen taulukoissa paikka voi olla tavallinen merkkijono. Seuraavassa esimerkissä sijoitetaan taulu -taulukon paikkaan paikka_nolla arvo nolla.
set taulu(paikka_nolla) "nolla"
set taulu(paikka_nolla)
=> nolla
Taulukoita voidaan käyttää kuten moniulotteisia taulukoita (engl. multidimensional array), seuraavan esimerkin mukaisesti:
set taulukko(matti,nimi) "Matti Meikkis"
set taulukko(matti,osoite) "Mattilankuja 55"
set taulukko(maija,nimi) "Maija Meikkis"
set taulukko(maija,osoite) [set taulukko(matti,osoite)]
Nyt Matin tietojen voidaan vaikka sanoa olevan paikoissa (0,0) ja (0,1), jos ajatellaan esimerkiksi perinteistä C-kielen taulukkoa. Vastaavasti ajateltuna Maijan tiedot ovat paikoissa (1,0) ja (1,1). Taulukossa 4.1 on esitet ty taulukon taulukko sisältö edellisen esimerkin jälkeisten sijoituksien jälkeen.
|
nimi |
Osoite |
matti |
Matti Meikkis |
Mattilankuja 55 |
maija |
Maija Meikkis |
Mattilankuja 55 |
Taulukko 4.2. Tcl-kielen taulukko ajateltuna fyysisenä taulukkona.
Taulukoita voi käsitellä array-komennolla, jolle annetaan parametrina taulukon nimi ja optio. Se kertoo, mitä taulukolle halutaan tehdä. Komennolla array vo i tutkia taulukon olemassaoloa, alkioiden määrää ja etsiä arvoja taulukosta. Seuraavassa esimerkissä saadaan tietää optiolla size, kuinka monta alkiota (engl. elements) taulukossa taulukko on.
array size taulukko
=> 4
Listoihin (engl. list) voi tallentaa yksittäisiä alkioita (arvoja) määrättömän määrän. Listat ovat tavallaan alkioiden joukkoja, joita voidaan hallita kokonaisuuksina. List a voidaan tallentaa tavalliseen muuttujaan käyttämällä kaarisulkeita, kuten seuraavassa esimerkissä:
set listanen {aatami beetami ceetami}
=> aatami beetami ceetami
Listan alkioina voi olla yksittäisten arvojen lisäksi myös toisia listoja seuraavan esimerkin tapaan:
set listanen {aatami beetami ceetami {a b c} }
=> aatami beetami ceetami {a b c}
Listoille on useita komentoja, joilla niitä voi muokata. Komento lindex palauttaa alkion listasta määrätystä kohdasta. Listan ensimmäinen alkio on paikassa 0. Täm&aum l; on hyvä muistaa, jotta osaa viitata listassa oikeaan alkioon. Esimerkissä
set ruoka_lista {juustoo maitoo leipää}
set listan_kolmas [lindex $ruoka_lista 2]
=> leipää
ruoka_lista-listasta saadaan arvo leipää listan paikasta 2.
Komennolla concat voi listoja yhdistää yhdeksi listaksi ja linsert-komennolla listaan voi lisätä alkion määrättyyn kohtaan. Esimerkissä
set karkki_lista {lakua jädeä}
set ruoka_lista {juustoo maitoo leipää }
set kauppa_lista [concat $karkki_lista $ruoka_lista]
=> lakua jädeä juustoo maitoo leipää
linsert $kauppa_lista 2 suklaata
set kauppa_lista
=> lakua jädeä suklaata juustoo maitoo leipää
liitetään ensin karkki_lista ja ruoka_lista listaksi kauppa_lista, jonka jälkeen siihen vielä lisätään su klaata.
Muita listoja koskevia komentoja ovat join, lappend, list, llength, lrange, lreplace , lsearch, lsort ja split, joista löytyy lisätietoa mm. lähteestä [WEL97W].